package com.hong.spring.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hong.spring.entity.User;
import com.hong.spring.entity.ao.UserAO;
import com.hong.spring.utils.DataResponse;

import java.util.List;

/**
 * @Auther: csh
 * @Date: 2020/8/18 15:07
 * @Description:用户服务层
 */
public interface IUserService extends IService <User> {
    /**
     * 功能描述:查询全部
     *
     * @param:
     * @return:
     * @auther: csh
     * @date: 2020/8/18 15:26
     */
    DataResponse <List <User>> findByAll();

    /**
     * 功能描述:批量添加
     *
     * @param:
     * @return:
     * @auther: csh
     * @date: 2020/8/21 15:47
     */
    DataResponse <Boolean> insertBatch(List <User> list);

    /**
     * 功能描述:更新
     *
     * @param:
     * @return:
     * @auther: csh
     * @date: 2020/8/18 15:26
     */
    DataResponse <Boolean> update(User user);

    /**
     * 功能描述:通过id查询
     *
     * @param:
     * @return:
     * @auther: csh
     * @date: 2020/8/18 15:42
     */
    DataResponse <User> findById(int i);

    /**
     * 功能描述:通过分页查询
     *
     * @param:
     * @return:
     * @auther: csh
     * @date: 2020/8/21 16:04
     */
    DataResponse <List <User>> findByPage(UserAO ao);

    /**
     * 功能描述:通过缓存查询
     *
     * @param:
     * @return:
     * @auther: csh
     * @date: 2020/8/27 16:56
     */
    User findLocalCacheById(Integer id);

    /**
     * 功能描述:通过guava缓存获取
     *
     * @param:
     * @return:
     * @auther: csh
     * @date: 2020/8/27 17:53
     */
    User findGuavaCacheById(Integer id);

    /**
     * 功能描述:通过spring缓存获取
     *
     * @param:
     * @return:
     * @auther: csh
     * @date: 2020/8/27 18:54
     */
    User findSpringGuavaCacheById(Integer id);

    /**
     * 功能描述:删除
     *
     * @param:
     * @return:
     * @auther: csh
     * @date: 2020/8/28 11:50
     */
    void deleteCache(Integer id);

    /**
     * 功能描述:通过userId
     *
     * @param:
     * @return:
     * @auther: csh
     * @date: 2020/8/28 14:18
     */
    User findByUserId(Integer id);
}
